package com.quyeying.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.quyeying.entity.vo.ReceiveVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 订单基础信息表
 * </p>
 *
 * @author skx
 * @since 2022-07-19
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("tbl_order_base")
public class TblOrderBaseEntity extends Model<TblOrderBaseEntity> {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 商户id
     */
    private Long merchantId;

    /**
     * 订单类型  0普通订单  1送礼订单  2收礼订单
     */
    private Integer type;

    /**
     * 系统订单号
     */
    private String orderNo;

    /**
     * 微信支付订单号
     */
    private String transactionId;

    /**
     * 0 否 1是【当订单为送礼单时，判断是否有礼物被送礼人领取】
     */
    private Integer selfReceive;

    /**
     * 用户支付金额
     */
    private BigDecimal payerTotal;

    /**
     * 待退款金额
     */
    @TableField(exist = false)
    private BigDecimal refundAmount;

    /**
     * 商户退款单号
     */
    private String outRefundNo;

    /**
     * 微信支付退款单号
     */
    private String refundId;

    /**
     * 退款状态  SUCCESS：退款成功 CLOSED：退款关闭 PROCESSING：退款处理中 ABNORMAL：退款异常
     */
    private String status;

    /**
     * 支付状态 待支付【0】 已支付【1】 退款中【2】已退款【3】已驳回【4】
     */
    private Integer payStatus;

    /**
     * 订单状态 待付款【0】待发货【1】待收货【2】确认收货【3】已取消【4】已退款【5】退款中【6】
     */
    private Integer orderStatus;

    /**
     * 收货人名称
     */
    private String consigneeName;

    /**
     * 收货人联系方式
     */
    private String consigneePhone;

    /**
     * 收货地址
     */
    private String consigneeAddr;

    /**
     * 运费
     */
    private BigDecimal freight;

    /**
     * 快递编号
     */
    private String shipperCode;

    /**
     * 物流运单号
     */
    private String logisticCode;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 订单商品信息
     * @return
     */
    @TableField(exist = false)
    private List<TblOrderProductEntity> orderProductEntities;

    /**
     * 礼物领取人昵称
     * @return
     */
    @TableField(exist = false)
    private String receiveUser;

    /**
     * 礼物订单领取信息
     * @return
     */
    @TableField(exist = false)
    private ReceiveVo receiveVo;

    /**
     * 礼物订单是否显示自领提示
     * @return
     */
    @TableField(exist = false)
    private Boolean showSelfReceive;


    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
